package io.renren.modules.mem_token.service.impl;

import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.renren.common.utils.PageUtils;
import io.renren.common.utils.Query;
import io.renren.common.utils.R;
import io.renren.modules.mem_token.dao.V9MemTokenDao;
import io.renren.modules.mem_token.entity.V9MemTokenEntity;
import io.renren.modules.mem_token.service.V9MemTokenService;
import io.renren.modules.sys.entity.SysUserTokenEntity;
import io.renren.modules.sys.oauth2.TokenGenerator;

@Service("v9MemTokenService")
public class V9MemTokenServiceImpl extends ServiceImpl<V9MemTokenDao, V9MemTokenEntity> implements V9MemTokenService {
	// 12小时后过期
	private final static int EXPIRE = 3600 * 12;

	@Override
	public PageUtils queryPage(Map<String, Object> params) {
		IPage<V9MemTokenEntity> page = this.page(new Query<V9MemTokenEntity>().getPage(params),
				new QueryWrapper<V9MemTokenEntity>());

		return new PageUtils(page);
	}

	@Override
	public R createToken(Integer userid) {
		// 生成一个token
		String token = TokenGenerator.generateValue();
		token = token + "_fromuser";
		// 当前时间
		Date now = new Date();
		// 过期时间
		Date expireTime = new Date(now.getTime() + EXPIRE * 1000);
		// 判断是否生成过token
		V9MemTokenEntity tokenEntity = this.getById(userid);
		// V9MemTokenEntity tokenEntity2=this.getById(userid);
		if (tokenEntity == null) {
			tokenEntity = new V9MemTokenEntity();
			tokenEntity.setMemId(userid);
			;
			tokenEntity.setToken(token);
			tokenEntity.setUpdateTime(now);
			tokenEntity.setExpireTime(expireTime);

			// 保存token
			this.save(tokenEntity);
		} else {
			tokenEntity.setToken(token);
			tokenEntity.setUpdateTime(now);
			tokenEntity.setExpireTime(expireTime);

			// 更新token
			this.updateById(tokenEntity);
		}
		R r = R.ok().put("token", token).put("expire", expireTime);

		return r;
	}

	@Override
	public void quit(Integer userid) {
		// 生成一个token
		String token = TokenGenerator.generateValue();

		// 修改token
		V9MemTokenEntity memTokenEntity = new V9MemTokenEntity();
		memTokenEntity.setMemId(userid);
		memTokenEntity.setToken(token);

		this.updateById(memTokenEntity);

	}

}